package com.itheima.dao;

import com.github.pagehelper.Page;
import com.itheima.pojo.Permission;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Set;

public interface PermissionDao {


    /**
     * 根据角色ID查询权限信息
     * @param id    角色ID
     * @return  权限信息
     */
    Set<Permission> findPermissionsByRoleId(@Param("roleId") Integer id);

    /**
     * 根据权限ID查询权限信息
     * @param id    权限id
     * @return  返回结果
     */
    Permission findById(@Param("id") int id);

    /**
     * 根据条件分页查询权限数据
     * @param queryString   查询条件
     * @return  返回结果
     */
    Page<Permission> findPage(@Param("queryString") String queryString);


    /**
     * 根据ID删除权限
     * @param id    权限ID
     */
    void delete(@Param("id") int id);

    /**
     * 查询全部权限信息
     * @return  返回结果
     */
    List<Permission> findAll();

    /**
     * 编辑权限信息
     * @param permission    权限实例
     */
    void update(Permission permission);

    /**
     * 根据权限名或者权限代码查询权限数量
     * @param permission   权限实例
     * @return  权限的数量
     */
    Integer findByNameOrKeyWord(Permission permission);

    /**
     * 新增权限
     * @param permission    权限实例
     */
    void add(Permission permission);

    /**
     * 根据权限ID查询绑定该权限的角色，一次一个
     * @param id    权限ID
     * @return  返回的角色名称
     */
    String findCountById(int id);
}
